foolyc

Softmax/Softmax Loss/Cross Entropy

在刚接触机器学习时候经常弄不清Softmax/Softmax-Loss/Cross Entropy等几个概念,后来阅读caffe源码以后对此比较清楚,刚好整理一下。

softmax

首先softmax是activation函数,可以认为是sigmonid从二分类到多分类的推广,公式如下:

image

作用是将一列数scale成和为1的概率分布。

cross-entropy

而Cross Entropy则是多分类问题的loss,定义如下

image

其作用则是定义了分类概率与真实label之间的偏差,预测越准,该偏差越小。

Softmax-Loss

caffe 中SoftmaxWithLossLayer的操作就是就输入的blob进行softmax操作之后,再计算cross-entropy。

很多人可能会奇怪,怎么公式看着不一样?注意,这里的是计算的multi-class的cross-entropy,在caffe里定义为Multinomial Logistic Loss,所以可以认为caffe 中SoftmaxWithLossLayer的等同于softmax+Multinomial Logistic Loss,这里之所以单独写SoftmaxWithLossLayer则是数值稳定性要求的原因,可以参见Numerical Stability

multi-class的cross-entropy可以根据以下公式计算,也刚好解释其本质就是cross-entropy

image

image

image

本文由foolyc创作和发表,采用BY-NC-SA国际许可协议进行许可
转载请注明作者及出处,本文作者为foolyc
本文标题为Softmax/Softmax Loss/Cross Entropy
本文链接为http://foolyc.com//2016/12/25/Softmax-Softmax Loss-Cross Entropy/.